home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / Windows Live Essentials / wlsetup-web.exe / 0 / CONTENT / MSNPANEHELP_SCRIPT.JS next >
Text File  |  2010-01-12  |  15KB  |  642 lines

  1. /**********************************************************************
  2.     Javascript functions for Pane Help
  3.     
  4.     Note: Many functions are designed for PROC, PH_MEGA, TROU topics
  5.     which have subtopic_choice radio buttons.
  6.     
  7.     Note: All functions are designed to work for IE4+ and Nav6 browsers.
  8.     
  9.     Note: Cannot use less-than or greater-than symbols
  10.     in the javascript or the XML parser will crash.
  11. **********************************************************************/
  12.  
  13. // Global variables
  14. var g_strSubtopicChoiceContext = ""
  15. var g_strCurrentContext = ""
  16. var g_arrContextElements
  17. var g_arrContextRelatedElements
  18. var g_arrArrowImages = new Array('arrowblueright.gif','arrowbluedown.gif')
  19.  
  20. var g_arrV4
  21.  
  22. var isIE4 = false
  23. var isNav4 = false
  24. var isNav6 = false
  25.  
  26. //Create the getV4 function, and then run it.
  27. function getV4()
  28. {
  29.     if ( typeof parent.v4 == 'string' )
  30.     {
  31.         var pv4 = parent.v4;
  32.         g_arrV4 = pv4.split(',');
  33.     }
  34.     else
  35.     {
  36.         g_arrV4 = new Array('');
  37.     }
  38. }
  39. getV4(); //execute the function during page load
  40.  
  41. //Conditional content test
  42. function ccTest( strValue )
  43. {
  44.     return ( v4Contains(strValue) || userAgentContains(strValue) );
  45. }
  46.  
  47. function v4Contains( strValue )
  48. {
  49.     if ( typeof strValue == 'string' )
  50.     {
  51.         if ( strValue != "" )
  52.         {
  53.             //Handle possible multiple values
  54.             var arrValues;
  55.             arrValues = strValue.split(',');
  56.             
  57.             for( i = 0; i < g_arrV4.length; i++ )
  58.             {
  59.                 for( j = 0; j < arrValues.length; j++ )
  60.                 {
  61.                     if ( g_arrV4[i] == arrValues[j] ) return true;
  62.                 }
  63.             }
  64.         }
  65.     }    
  66.     return false;
  67. }
  68.  
  69. function userAgentContains( strValue )
  70. {
  71.     if ( typeof strValue == 'string' )
  72.     {
  73.         if ( strValue != "" )
  74.         {
  75.             //Handle possible multiple values
  76.             var arrValues;
  77.             arrValues = strValue.split(',');
  78.             
  79.             for( j = 0; j < arrValues.length; j++ )
  80.             {
  81.                 if ( navigator.userAgent.indexOf( arrValues[j] ) != -1) return true;
  82.             }
  83.         }
  84.     }    
  85.     return false;
  86. }
  87.  
  88. function onPageLoad( strTemplate )
  89. {
  90.     //Even though the page is supposed to be fully loaded before the onLoad event is triggered,
  91.     //Nav6 will return false from the existsForm function unless there is a slight delay before
  92.     //querying for the existence of the form.
  93.     if (isIE4)
  94.     {
  95.         startPage(strTemplate)
  96.     }
  97.     else if (isNav6) 
  98.     {
  99.         var strNext = "startPage('" + strTemplate + "')"
  100.         setTimeout(strNext,0) //Even though the delay is set to 0, this works?!
  101.     }
  102. }
  103.  
  104. function startPage( strTemplate )
  105. {
  106.     if ((strTemplate == 'PROC') || (strTemplate == 'TROU') || (strTemplate == 'PH_MEGA'))
  107.     {
  108.         if ( existsForm("SubtopicChoiceForm") )
  109.         {
  110.             // set the classNames of the elements that have context
  111.             // or are related ancestors of the context elements
  112.             g_arrContextElements = new Array('INSTRUCTIONS','MORE_INFO','LINK')
  113.             g_arrContextRelatedElements = new Array('LINKS')
  114.  
  115.             hideContextContent() //hide any elements that have context
  116.             resetSubtopicChoiceForm() //make sure the buttons are unchecked and the context is nothing
  117.         }
  118.         else
  119.         {
  120.             showContextContent()
  121.         }
  122.     }    
  123. }
  124. function resetSubtopicChoiceForm()
  125. {
  126.      if ( existsForm("SubtopicChoiceForm") )
  127.      {
  128.          //uncheck all SubtopicChoice radio elements
  129.          var oRadioGroup = document.forms["SubtopicChoiceForm"].SubtopicChoice
  130.          for (var i = 0; i < oRadioGroup.length; i++)
  131.          {
  132.              oRadioGroup[i].checked = false
  133.          }
  134.          //set the subtopic_choice context to nothing
  135.          setSubtopicChoiceContext("")
  136.      }
  137. }
  138.  
  139. function setCurrentContext()
  140. {
  141.     g_strCurrentContext = getSubtopicChoiceContext()
  142. }
  143.  
  144. function setSubtopicChoiceContext( strContext )
  145. {
  146.     g_strSubtopicChoiceContext = strContext
  147. }
  148.  
  149. function getSubtopicChoiceContext()
  150. {
  151.     return g_strSubtopicChoiceContext
  152. }
  153.  
  154. function hasTheContext( strElementContext, strCurrentContext )
  155. {
  156.     // Does this element have the current context
  157.  
  158.     var arrElementContext = strElementContext.split(",")
  159.     
  160.     for (var i = 0; i < arrElementContext.length; i++)
  161.     {
  162.         if ( (arrElementContext[i] == g_strCurrentContext) )
  163.         {
  164.             return true
  165.         }
  166.     }
  167.     return false
  168. }
  169. function getElementContext( oElement )
  170. {
  171.     //The context is contained in the id attribute
  172.     var strContext = ( oElement.id ) ? oElement.id : ""
  173.     return strContext
  174. }
  175. function clickedSubtopicChoice( strContext )
  176. {
  177.     setSubtopicChoiceContext( strContext ) // remember the context
  178.     hideContextContent()  // first, hide all context content
  179.     showContextContent()  // finally, show all context content dependent on the new context
  180. }
  181. function clickedSubtopicChoiceText( strContext, strID )
  182. {
  183.     oSubtopicChoice = getElementById( strID );
  184.     oSubtopicChoice.checked = true;
  185.     clickedSubtopicChoice( strContext );
  186. }
  187. function isContextElement( oElement )
  188. {
  189.     // Is oElement an element that uses the id attribute to indicate the context?
  190.     for (var i=0; i < g_arrContextElements.length; i++)
  191.     {
  192.         if (oElement.className == g_arrContextElements[i])
  193.         {
  194.             return true
  195.         }
  196.     }
  197.     return false
  198. }
  199. function isContextRelatedElement( oElement )
  200. {
  201.     // Is oElement an element whose display depends on a child elements context?
  202.     for (var i=0; i < g_arrContextRelatedElements.length; i++)
  203.     {
  204.         if (oElement.className == g_arrContextRelatedElements[i])
  205.         {
  206.             return true
  207.         }
  208.     }
  209.     return false
  210. }
  211. function showContentForContextElement(oElement,oLinksElement)
  212. {
  213.     if (isContextElement(oElement))
  214.     {
  215.         if (hasTheContext(getElementContext(oElement),g_strCurrentContext))
  216.         {
  217.             if (oElement.className == 'LINK')
  218.             {
  219.                 setStylePropertyByElement( oLinksElement, 'display', '' ) // display the related LINKS container
  220.             }
  221.             if (oElement.className == 'SUBTOPIC_CHOICE')
  222.             {
  223.                 var oSubtopicChoicesElement = getElementById('SUBTOPIC_CHOICES')
  224.                 if (oSubtopicChoicesElement != null)
  225.                 {
  226.                     setStylePropertyByElement( oSubtopicChoicesElement, 'display', '' ) // display the related LINKS container
  227.                 }
  228.             }
  229.             setStylePropertyByElement( oElement, 'display', '' ) // display the element
  230.         }
  231.         else
  232.         {
  233.             setStylePropertyByElement( oElement, 'display', 'none' ) // hide the element
  234.         }
  235.     }
  236. }
  237. function showContextContent()
  238. {
  239.     // Display all elements appropriate for the context
  240.     var oElement
  241.     var oLinksElement
  242.     
  243.     //First, make sure that the current context is up-to-date
  244.     setCurrentContext()
  245.     
  246.     if (isIE4)
  247.     {
  248.         for (var i = 0; i != document.all.length; i++)
  249.         {
  250.             oElement = document.all[i]
  251.             if (oElement.className == 'LINKS') 
  252.             {
  253.                 oLinksElement = oElement
  254.             }
  255.             showContentForContextElement(oElement,oLinksElement)
  256.         }
  257.     }
  258.     else if (isNav6)
  259.     {
  260.         var colElements
  261.         //elements with INSTRUCTIONS, MORE_INFO, LINKS className are <div> tags
  262.         colElements = document.getElementsByTagName("div")
  263.         for (var i = 0; i != colElements.length; i++)
  264.         {
  265.             oElement = colElements[i]
  266.             if (oElement.className == 'LINKS') 
  267.             {
  268.                 oLinksElement = oElement
  269.             }
  270.             showContentForContextElement(oElement,oLinksElement)
  271.         }
  272.         //elements with LINK className are <a> tags
  273.         colElements = document.getElementsByTagName("a")
  274.         for (var i = 0; i != colElements.length; i++)
  275.         {
  276.             oElement = colElements[i]
  277.             showContentForContextElement(oElement,oLinksElement)
  278.         }
  279.     }
  280. }
  281. function hideContentForContextElement(oElement)
  282. {
  283.     if ( (isContextElement(oElement)) || (isContextRelatedElement(oElement)) )
  284.     {
  285.         setStylePropertyByElement( oElement, 'display', 'none' ) // hide the element
  286.     }
  287. }
  288.  
  289. function hideContextContent()
  290. {
  291.     // Hide all elements that have context
  292.     var oElement
  293.     
  294.     if (isIE4)
  295.     {
  296.         for (var i = 0; i != document.all.length; i++)
  297.         {
  298.             oElement = document.all[i]
  299.             hideContentForContextElement(oElement)
  300.         }
  301.     }
  302.     else if (isNav6)
  303.     {
  304.         var colElements
  305.         //elements with INSTRUCTIONS, MORE_INFO, LINKS className are <div> tags
  306.         colElements = document.getElementsByTagName("div")
  307.         for (var i = 0; i != colElements.length; i++)
  308.         {
  309.             oElement = colElements[i]
  310.             hideContentForContextElement(oElement)
  311.         }
  312.         //elements with LINK className are <a> tags
  313.         colElements = document.getElementsByTagName("a")
  314.         for (var i = 0; i != colElements.length; i++)
  315.         {
  316.             oElement = colElements[i]
  317.             hideContentForContextElement(oElement)
  318.         }
  319.     }
  320. }
  321.  
  322. function toggleTips( strTipsID, strTipsImageID )
  323. {
  324.     var oTipsImageElement = getElementById( strTipsImageID )
  325.     
  326.     if (isIE4 || isNav6)
  327.     {
  328.         if ( getStylePropertyById( strTipsID,'display')=='none' )
  329.         {
  330.             setStylePropertyById( strTipsID, 'display', 'block' ) //show the Tips
  331.             if (oTipsImageElement != null)
  332.             {
  333.                 //show the down arrow
  334.                 oTipsImageElement.src = g_arrArrowImages[1]
  335.             }
  336.         }
  337.         else
  338.         {
  339.             setStylePropertyById( strTipsID, 'display', 'none' ) //hide the Tips
  340.             if (oTipsImageElement != null)
  341.             {
  342.                 //show the right arrow
  343.                 oTipsImageElement.src = g_arrArrowImages[0]
  344.             }
  345.         }
  346.     }
  347.     else
  348.     {}    //so Nav4 won't return error
  349. }
  350.  
  351. function takeMeThere( strURL, strWindowName )
  352. {
  353.     window.open( strURL, strWindowName )
  354. }
  355.  
  356. function toggleALTTOCImg( element, strEvent )
  357. {
  358.     // redirect to the ti function
  359.     ti( element, strEvent )
  360. }
  361.  
  362. function ti( element, strEvent )
  363. {
  364.     var oElement;
  365.     oElement = getElementObject( element );
  366.     
  367.     if (oElement != null)
  368.     {
  369.         var strSrc = oElement.src;
  370.         var intIndex = strSrc.lastIndexOf("/");
  371.         var strSrcRoot = "";
  372.         var strImgName = strSrc;
  373.         var strNewImgName;
  374.         if (intIndex >= 0) 
  375.         {
  376.             strSrcRoot = strSrc.substring(0,intIndex+1);
  377.             strImgName = strSrc.substring(intIndex+1,strSrc.length);
  378.         }
  379.         strImgName = strImgName.substring(0,strImgName.length - 4);
  380.         switch (strImgName)
  381.         {
  382.             case "question_icon":
  383.                 strNewImgName = 'question_icon_hover';
  384.                 break;
  385.             case "question_icon_hover":
  386.                 strNewImgName = 'question_icon';
  387.                 break;
  388.             case "widget_plus":
  389.                 if ( strEvent == 'r')
  390.                     strNewImgName = 'widget_plus_hvr';
  391.                 else if ( strEvent == 't')
  392.                     strNewImgName = 'widget_plus';
  393.                 else
  394.                     strNewImgName = 'widget_minus';
  395.                 break;
  396.             case "widget_plus_hvr":
  397.                 if ( strEvent == 't')
  398.                     strNewImgName = 'widget_plus';
  399.                 else
  400.                     strNewImgName = 'widget_minus';
  401.                 break;
  402.             case "widget_minus":
  403.                 if ( strEvent == 'r')
  404.                     strNewImgName = 'widget_minus_hvr';
  405.                 else if ( strEvent == 't')
  406.                     strNewImgName = 'widget_minus';
  407.                 else
  408.                     strNewImgName = 'widget_plus';
  409.                 break;
  410.             case "widget_minus_hvr":
  411.                 if ( strEvent == 't')
  412.                     strNewImgName = 'widget_minus';
  413.                 else
  414.                     strNewImgName = 'widget_plus';
  415.                 break;
  416.         }
  417.         oElement.src = strSrcRoot + strNewImgName + '.gif';
  418.     }
  419. }
  420.  
  421. /**********************************************************************
  422.     Generic Cross Browser Code
  423. **********************************************************************/
  424.  
  425. function setBrowser()
  426. {
  427.     //Simple browser sniffer
  428.     
  429.     if (document.all)
  430.     {
  431.         isIE4 = true
  432.     }
  433.     else if (document.layers)
  434.     {
  435.         isNav4 = true
  436.     }
  437.     else if (document.getElementById)
  438.     {
  439.         isNav6 = true //also true for IE5.5
  440.     }
  441. }
  442.  
  443. setBrowser(); // determine which browser we are using
  444.  
  445. function blur( oElement )
  446. {
  447.     oElement.blur()
  448. }
  449.  
  450. function existsForm( name )
  451. {
  452.     if ( typeof document.forms[name] == "object" )
  453.         return true
  454.     else
  455.         return false
  456. }
  457. function getElementById( strId )
  458. {
  459.     if (isNav6)
  460.     {
  461.         return document.getElementById( strId );
  462.     }
  463.     else if (isIE4)
  464.     {
  465.         return document.all[strId]
  466.     }
  467.     else
  468.     {
  469.         return null
  470.     }
  471. }
  472. function getElementObject( element )
  473. {
  474.     var oElement = null;
  475.     
  476.     // get the element
  477.     if (typeof element == "object")
  478.     {
  479.         oElement = element;
  480.     }
  481.     else if (typeof element == "string")
  482.     {
  483.         oElement = getElementById( element );
  484.     }
  485.     return oElement;    
  486. }
  487. function getStyleBySelector( selector )
  488. {
  489.     if (!isNav6)
  490.     {
  491.         return null;
  492.     }
  493.     var sheetList = document.styleSheets;
  494.     var ruleList;
  495.     var i, j;
  496.  
  497.     /* look through stylesheets in reverse order that
  498.        they appear in the document */
  499.     for (i=sheetList.length-1; i >= 0; i--)
  500.     {
  501.         ruleList = sheetList[i].cssRules;
  502.         for (j=0; j<ruleList.length; j++)
  503.         {
  504.             if (ruleList[j].type == CSSRule.STYLE_RULE && ruleList[j].selectorText == selector)
  505.             {
  506.                 return ruleList[j].style;
  507.             }   
  508.         }
  509.     }
  510.     return null;
  511. }
  512. function getStylePropertyById( strId, strProperty )
  513. {
  514.     if (isNav6)
  515.     {
  516.         var styleObject = document.getElementById( strId );
  517.         if (styleObject != null)
  518.         {
  519.             styleObject = styleObject.style;
  520.             if (styleObject[strProperty])
  521.             {
  522.                 return styleObject[ strProperty ];
  523.             }
  524.         }
  525.         styleObject = getStyleBySelector( "#" + strId );
  526.         return (styleObject != null) ?
  527.             styleObject[strProperty] :
  528.             null;
  529.     }
  530.     else if (isIE4)
  531.     {
  532.         return document.all[strId].style[strProperty];
  533.     }
  534.     else
  535.     {
  536.         return ""
  537.     }
  538. }
  539. function setStylePropertyById( strId, strProperty, strValue )
  540. {
  541.     if (isNav6)
  542.     {
  543.         var styleObject = document.getElementById( strId );
  544.         if (styleObject != null)
  545.         {
  546.             styleObject = styleObject.style;
  547.             styleObject[ strProperty ] = strValue;
  548.         }
  549.     }
  550.     else if (isIE4)
  551.     {
  552.         if (document.all[strId] != null)
  553.             document.all[strId].style[strProperty] = strValue;
  554.     }
  555.     else
  556.     {}    //so Nav4 won't return error
  557. }
  558. function setStylePropertyByElement( oElement, strProperty, strValue )
  559. {
  560.     if (isNav6)
  561.     {
  562.         var styleObject = oElement;
  563.         if (styleObject != null)
  564.         {
  565.             styleObject = styleObject.style;
  566.             styleObject[ strProperty ] = strValue;
  567.         }
  568.     }
  569.     else if (isIE4)
  570.     {
  571.         if (oElement != null)
  572.             oElement.style[strProperty] = strValue;
  573.     }
  574.     else
  575.     {}    //so Nav4 won't return error
  576. }
  577. function toggleElementDisplay( element, strStyle )
  578. {
  579.     // strStyle = (none,block,inline)
  580.     var strID
  581.     
  582.     //get the element id
  583.     if (typeof element == "object")
  584.     {
  585.         strID = element.id    
  586.     }
  587.     else if (typeof element == "string")
  588.     {
  589.         strID = element
  590.     }
  591.     
  592.     if ((strID != "") && (strID != null))
  593.     {
  594.         if (isIE4 || isNav6)
  595.         {
  596.             if ( getStylePropertyById( strID,'display')=='none' )
  597.             {
  598.                 setStylePropertyById( strID, 'display', strStyle ) //show the element
  599.             }
  600.             else
  601.             {
  602.                 setStylePropertyById( strID, 'display', 'none' ) //hide the element
  603.             }
  604.         }
  605.     }
  606. }
  607. function toggleImg( element, strImg1, strImg2 )
  608. {
  609.     var oElement;
  610.     oElement = getElementObject( element );
  611.     
  612.     if (oElement != null)
  613.     {
  614.         var strSrc = oElement.src;
  615.         if ( strSrc.indexOf(strImg1) > -1 )
  616.         {
  617.             oElement.src = strImg2;
  618.         }
  619.         else
  620.         {
  621.             oElement.src = strImg1;
  622.         }
  623.     }
  624. }
  625. function changeImg( element, strImg )
  626. {
  627.     var oElement;
  628.     oElement = getElementObject( element );
  629.     
  630.     if (oElement != null)
  631.     {
  632.         var strSrc = oElement.src;
  633.             oElement.src = strImg;
  634.     }
  635. }
  636.  
  637. /**********************************************************************
  638.     End Generic Cross-Browser Code
  639. **********************************************************************/
  640.  
  641.  
  642.